package com.yootk.cloud.service.impl;

import com.yootk.cloud.dao.IDeptDAO;
import com.yootk.cloud.vo.Dept;
import com.yootk.dto.DeptDTO;
import com.yootk.service.IDeptService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Service
public class DeptServiceImpl implements IDeptService {
    @Resource
    private IDeptDAO deptDAO ;  // 注入要使用的DAO接口实例
    @Override
    public DeptDTO add(DeptDTO dto) {
        Dept vo = new Dept() ;  // 实例化服务端本地VO类对象
        BeanUtils.copyProperties(dto,vo); // 类的属性拷贝
        if (this.deptDAO.doCreate(vo)) {    // 进行内容的保存，获取增长后的ID
            DeptDTO returnDTO = new DeptDTO() ;
            BeanUtils.copyProperties(vo,returnDTO); // 将数据设置在DTO之中
            return returnDTO ;
        }
        return null;
    }
    @Override
    public List<DeptDTO> list() {
        List<Dept> allDepts = this.deptDAO.findAll() ;  // 查询所有的VO
        List<DeptDTO> allDtos = new ArrayList<>() ; // 设置返回就集合
        allDepts.forEach((dept)->{
            DeptDTO dto = new DeptDTO() ;
            BeanUtils.copyProperties(dept,dto);
            allDtos.add(dto) ;
        });
        return allDtos;
    }

    @Override
    public DeptDTO get(long id) {
        Dept vo = this.deptDAO.findById(id) ;
        DeptDTO dto = new DeptDTO() ;
        BeanUtils.copyProperties(vo,dto);
        return dto;
    }
}
